package xfuzzy.alg_genetico.indeterminado.replacement;

import java.util.Random;

import xfuzzy.xfghl.codification.DoubleChromosome;
import xfuzzy.xfghl.population.Population;
import xfuzzy.xfghl.replacement.Replacement;

public class TorneoRestringido extends Replacement {
	
	private Random random;
	private int tournamentSize;
	
	public TorneoRestringido(long replacementSeed, int tournamentSize)  {
		
		this.random = new Random(replacementSeed);
		this.tournamentSize = tournamentSize;
	}

	public void replace(Population poblacion, DoubleChromosome child1, DoubleChromosome child2, DoubleChromosome father1, DoubleChromosome father2) {
		
		//DobleCromosoma seleccionado = realizarTorneo(poblacion);
		
	}

	public Random getRandom() {
		return random;
	}

	public void setRandom(Random random) {
		this.random = random;
	}

	public int getTournamentSize() {
		return tournamentSize;
	}

	public void setTournamentSize(int tournamentSize) {
		this.tournamentSize = tournamentSize;
	}
	
//	private DobleCromosoma realizarTorneo(Poblacion poblacion)  {
//		
//		List<DobleCromosoma> seleccionados = new ArrayList<DobleCromosoma>();
//		DobleCromosoma seleccionado = null;
//		DobleCromosoma individuo = null;
//		int indice = -1;
//		for (int iteracion = 0; iteracion < this.tournamentSize; iteracion++)  {
//			 indice = this.random.nextInt(poblacion.getPoblacionSize());
//			 individuo = poblacion.getIndividuo(indice);
//			 while (seleccionados.contains(individuo))  {
//				 indice = this.random.nextInt(poblacion.getPoblacionSize());
//				 individuo = poblacion.getIndividuo(indice);
//			 }
//			 seleccionados.add(individuo);
//		}
//		seleccionado = seleccionados.get(0);
//		for (int iteracion = 1; iteracion < this.tournamentSize; iteracion++)
//			 if (seleccionados.get(iteracion).getFitness() < seleccionado.getFitness())
//				 seleccionado = seleccionados.get(iteracion);
//		return seleccionado;
//	}
}
